//可以把父类理解成原型对象 prototype
class Person {
    constructor(name,age){
        this.name=name
        this.age=age        
    }
    sayHello(){
        console.log('大家好')
    }
}
class American extends Person{
    //这里直接使用报错：SyntaxError: missing super() call in constructor
    constructor(name,age){ 
        //调用super方法即可
        /**
         * 1.为什么要在constructor中调用super？？？
         * 答：如果子类是通过使用了extends继承了父类，那么一定要在子类的contructor构造函数中，必须手动优先调用super()方法
         * 2.supper是什么？？？
         * 答：super是一个函数，而是他是父类的构造器，子类中的super，其实就是父类中，contructor的一个引用
         * 3.为什么调用了super()之后，a1的实例属性都变成undefined了？？？
         * 答：
         * 
        */
        super(name,age)
    }
}
const a1 = new American('jack',18)
a1.sayHello()
console.log(a1)

//在class类中，可以使用 extends 关键字 实现子类继承父类 
class Chinese extends Person{
    /**
     * @param{name,age,IDNumber} 姓名 年龄 身份证号
     * name 姓名
     * age 年龄
     * IDNumber 身份证号 国人独有的，就不适合挂载到父类上
    */
    constructor(name,age,IDNumber){
        //写在这里报错：SyntaxError: 'this' is not allowed before super()
        //this.IDNumber = IDNumber
        super(name,age)
        //在子类中this只能放到super之后调用
        this.IDNumber = IDNumber
        
    }
}

const c1 = new Chinese('码云',18,'13023920*****')
c1.sayHello()
console.log(c1)
